///////////////////////////////
// Analizador sintáctico
///////////////////////////////

parser grammar AnalexParser;

options {
  language = Java;
  tokenVocab = AnalexLexer;
}

@header {
  package practpl.seis;
}

@members {
//     private ArrayList<RecognitionException> errors = new ArrayList<RecognitionException>();
//     public ArrayList<RecognitionException> getErrors() {
//        return errors;
//     }
//     @Override
//     public void reportError (RecognitionException e) {
//        String msg = getErrorMessage(e, getTokenNames());
//        System.err.println(msg);
//        errors.add(e);
//     }
}

entrada : instrucciones;
instrucciones : (instruccion)* ;
instruccion : exp SEPARADOR ;
exp : exp_mult ((MAS|MENOS) exp_mult)* ;
exp_mult : exp_base ((MULT|DIV) exp_base)* ;
exp_base : NUMERO
| PARENTESISA exp PARENTESISC
;
